/*
import { mainStore } from '@/stores/mainStore'
let piniaMainStore = mainStore()

// 读取state值
console.log(piniaMainStore.name); //xxx

// 修改state值
piniaMainStore.name = 'hello world'
console.log(piniaMainStore.name);

// 批量修改，使用$patch方法可以修改多个state中的值,比如我们在piniaStore/storeA.js中的state增加一个name
// 也是支持修改单个状态
piniaMainStore.$patch({
    name: 'hello world2',
    count: 2,
})

// or 使用函数的方式进行修改

piniaMainStore.$patch((state) => {
  state.name = 'hello world2'
  state.count = 2
})

// 调用action
piniaMainStore.loginOut()

// 重置state，将状态重置为初始值
piniaMainStore.$reset()

 */
import { defineStore } from "pinia"
import axios from 'axios'
import api from '@/api'
import tool from '@/utils/tool'
import sysConfig from "@/config";
//这里是对pinia进行一个取名，state需要时一个函数的形式
export const userStore = defineStore("userStore", {
    state: () => {
        return {
            token: '',
            hasLogin: false,
            provider: {}, // 用户资料
            taxId: 0, // 选择的税源
        }
    },
    getters: {},
    // 同步和异步皆可
    actions: {
        // 用户退出
        async loginOut() {
            // console.log('用户退出')
            tool.cookie.remove(sysConfig.TOKEN_KEY)
            tool.data.remove(sysConfig.USER_INFO_KEY)
            tool.data.remove(sysConfig.ROUTE_INFO_KEY)
            tool.data.remove(sysConfig.ROUTE_DEFAULT_PATH)
            this.token = ''
            this.hasLogin = false
            this.provider = {}
        },
        async login(userInfo) {
            tool.data.set(sysConfig.USER_INFO_KEY, userInfo)
            this.hasLogin = true
            this.provider = userInfo
            // console.log('登录状态', this.hasLogin)
            return userInfo
        },
        // 刷新用户资料
        async refreshUserInfo() {
            return new Promise(async (resolve, reject) => {
                // getInfo接口里没有token，只有用户信息
                const res = await api.user.info.get()
                const { data } = res
                let userInfo = data.userInfo

                this.login(userInfo)
                // userInfo.isAuthentication = isAuthentication
                // userInfo.role = ['user'] // 固定设置
                // tool.data.set(sysConfig.USER_INFO_KEY, userInfo)
                //
                // this.hasLogin = true
                // this.provider = userInfo
                resolve(userInfo)
            })
        },
    }
})
